Základy R

Marek Prokop

PROKOP software s.r.o.

26. 2. 2024

V této části se naučíte:

  1. Co je R
  2. Proč je R vhodné pro SEO
  3. Jak R nainstalovat, nastavit a udržovat
  4. Jak pracovat s konzolí, skripty a dokumenty Quarto
  5. Jak používat Markdown v dokumentech Quarto
  6. Které základní datové typy a operace R budete potřebovat

Co je R

R je programovací jazyk pro statistiku a práci s daty

  • R je open source.
  • R je zadarmo.
  • R běží na všech běžných operačních systémech.
  • R má rozsáhlou a velmi přátelskou komunitu.
  • R může běžet i v cloudu.
  • Jako vývojové a uživatelské prostředí pro R se nejastěji používá RStudio.

Proč používat R pro SEO

  • Na R se můžete dívat jako na Excel, který je rychlejší, zvládá větší data a umí toho víc.
  • Skripty uchovají postup řešení. Když teď něco uděláte, dokážete i po roce zjist, jak jste to udělali, a proč zrovna takhle.
  • R usnadňuje automatizaci. Cokoli v R uděláte, můžete kdykoli později snadno zopakovat s jinými daty či parametry.
  • R umí přistupovat k datům Search Console, Google Analytics a dalších nástrojů, které mají API.
  • V R jdou tvořit luxusní vizualizace, reporty, dashboardy a mnoho jiných výstupů. I tato prezentace je napsaná v R.

Motivační obrázek :-)

Instalace a nastavení R a RStudia

Instalace R

Především potřebujete základní jazyk R. Nainstalujete ho z adresy https://cloud.r-project.org/.

Instalace RStudia

Nainstalujte bezplatnou verzi RStudio Desktop z adresy https://posit.co/download/rstudio-desktop/.

Nastavení RStudia – .RData

Nastavení RStudia – native pipe

Balíčky

Funkčnost základního R rozšiřují balíčky (packages). Pro začátek si nainstalujte balíčky tidyverse, usethis, devtools a searchConsoleR.

Menu Tools příkaz Install Packages

Práce v RStudiu

Založte si „školní” projekt

Příkaz New Project… z menu File

Organizace projektů v RStudiu

Projekty používejte vždy a dobře si promyslete strukturu složek. Já používám:

  • Jednu kořenovou složku na všechno v R.

  • V ní mám podsložky:

    • Clients – pro všechny klienty a klientské projekty.

    • Trials – na různé pokusy, o kterých ještě nevím, co z nich bude.

    • Learning – na kurzy, které si občas dělám.

    • Public – na projekty, které publikuju veřejně jako opensource.

  • V každé této podsložce pak zakládám samostatné projekty. Některé projekty pak ještě člením na další podsložky.

Konzole, skripty, Quarto

Postupně vám naživo ukážu práci v konzoli, ve skriptu a v dokumentu Quarto.

  • Práce k v kozoli se hodí pro rychlé ověření nějaké funkce či hodnoty, nastavení něčeho, vyzkoušení něčeho. Já sám používám konzoli výjimečně.
  • Skripty se hodí pro definici funkcí, nějaký automatický proces, psaní balíčků apod. Jdou spouštět i přímo z operačního systému.
  • Dokumenty Quarto se hodí na vše ostatní, tedy zejména na vlastní analýzy, reporty či prezentace pro klienty apod.

Více o Quartu a Markdownu

Proč Quarto / R Markdown

  • Všechno, co uděláte, budete mít uložené a můžete se k tomu kdykoli vrátit.
  • Ke kódu si můžete psát vlastní komentáře – co chcete udělat, proč to děláte zrovna takhle, co z toho vyplývá atd.
  • Můžete snadno spouštět jak celý kód, tak jeho logické části.
  • Výsledky vidíte rovnou u kódu, který je vytvořil.
  • Výstupy můžete snadno sdílet s lidmi, kteří R nepoužívají.

Druhy R Markdownu

Podle chování

  • R Notebook

  • R Document

  • R Presentation

  • Quarto Document

  • Quarto Presentation

Podle výstupu

  • HTML

  • PDF

  • Word

  • Powert Point

  • Markdown pro Github

  • a asi 20 dalších formátů

Pro začátek vám bude stačit jenom Quarto Document s výstupem do HTML.

Markdown pro běžný text

# Tohle je nadpis 1. úrovně

Tohle je běžný odstavec. Víc odstavců je od sebe odděleno dvěma Entry čili prázdným řádkem.

## Tohle je nadpis 2. úrovně

Tohle je příklad [odkazu v textu](https://example.com). A tohle je příklad odrážek:

- první odrážka,
- druhá odrážka,
- třetí odrážka.

Jdou udělat i číslované body, které se automaticky očíslují podle pořadí:

1. První bod.
1. Druhý bod.
1. Poslední bod.

Markdown pro běžný text – výsledek

Markdown s kódem v R

R Mardown je Markdown, do kterého jsou zamíchané kusy eRkového kódu.

Libovolný text v Markdownu…

```{r}
5 + 15
```

Jiný libovolný text v Markdownu…

```{r}
100 - 10
```

Blok kódu v R přidáte klávesovou zkratkou Ctrl+Alt+I.

Výpis tabulky

mtcars

Zobrazení grafu

library(ggplot2)
mtcars |> 
  ggplot(aes(hp, mpg)) +
  geom_point()

Základní datové typy v R

Čísla

Číslo je prostě číslo.

15
[1] 15
3.14
[1] 3.14

S čísly jde počítat

10 + 20
[1] 30
20 - 5
[1] 15
20 / 5
[1] 4
(5 * 4) / 2
[1] 10

Znakové řetězce

Znakový řetězec se dává do uvozovek nebo apostrofů.

"Tohle je znakový řetězec"
[1] "Tohle je znakový řetězec"
'A tohle je taky znakový řetězec'
[1] "A tohle je taky znakový řetězec"
'Tohle je znakový řetězec s "uvozovkami" uvnitř.'
[1] "Tohle je znakový řetězec s \"uvozovkami\" uvnitř."

Řetězce spojuje funkce paste.

paste("první řetězec", "druhý řetězec")
[1] "první řetězec druhý řetězec"

Nebo s čárkou mezi místo mezery:

paste("první řetězec", "druhý řetězec", sep = ",")
[1] "první řetězec,druhý řetězec"

Nebo bez ničeho mezi:

paste("první řetězec", "druhý řetězec", sep = "")
[1] "první řetězecdruhý řetězec"

Funkce

  • Funkce fungují jako v Excelu, ale většinou se jmenují jinak.
  • Parametry bez jména musí být v přesném pořadí.
  • Pojmenované parametry mohou být v libovolném pořadí.
  • Nápovědu získáte klávesou F1 nebo otazníkem před funkcí.

Příklady funkcí

abs(-15)
[1] 15
round(15.9876, digits = 2)
[1] 15.99
floor(15.9876)
[1] 15
max(1, 2, 3, 4, 5)
[1] 5

Vektory

Proč se před každým výsledkem zobrazuje [1]?

  • Protože základní datové typy v R (čísla, znakové řetězce, logické hodnoty a tzv. faktory) jsou vždy vektory.

  • Vektor je uspořádaná posloupnost jedné či více hodnot.

  • Výsledkem následující operace je tedy číselný vektor s jednou hodnotou.

3 + 5
[1] 8

Vytváření vektorů

Když chcete vytvořit vektor s více než jednou hodnotou, máte několik možností.

Např. posloupnost:

1:10
 [1]  1  2  3  4  5  6  7  8  9 10

Nebo použijete funkci c:

c(1, 2, 3, 6, 5, 4)
[1] 1 2 3 6 5 4

Počítání s vektory

S vektory jde normálně počítat a vlastně dělat skoro cokoli.

c(1, 2, 3) * 10
[1] 10 20 30
c(1, 2, 3) * c(1, 2, 3)
[1] 1 4 9
paste(
  c(
    "první vektor, první řetězec", 
    "první vektor, druhý řetězec"
  ), 
  c(
    "druhý vektor, první řetězec", 
    "druhý vektor, druhý řetězec"
  ),
  sep = " - "
)
[1] "první vektor, první řetězec - druhý vektor, první řetězec"
[2] "první vektor, druhý řetězec - druhý vektor, druhý řetězec"

Nápověda k funkcím

R má integrovanou nápovědu ke všem funkcím. Vyvoláte ji:

  • Klávesou F1 na názvu funkce v konzoli, skriptu, nebo bloku kódu v R Markdownu.
  • Otazníkem a názvem funkce.
?rnorm

Nápověda se v RStudiu zobrazí na panelu Help.

Vnořování funkcí

Představte si, že potřebujete vnořit jednu funkci do druhé, např.:

round(runif(n = 40, min = 1, max = 10), digits = 2)
 [1] 5.10 4.82 4.78 7.68 8.91 2.78 7.11 2.09 4.06 3.54 2.44 2.68 8.13 8.78 7.28
[16] 2.12 4.25 9.22 2.73 8.01 2.01 5.77 9.77 5.41 1.91 4.81 8.02 2.74 2.23 7.88
[31] 8.54 9.82 4.57 4.66 3.59 9.32 4.61 2.76 5.44 6.65

Pipes neboli řetězení funkcí

V R budete používat fakt hodně funkcí a vnořování by bylo brzy nepřehledné. Proto existuje operátor pipe.

runif(n = 40, min = 1, max = 10) |> 
  round(digits = 1)
 [1] 8.7 3.0 3.7 5.8 1.5 8.5 6.4 6.9 7.4 3.3 4.8 1.1 7.1 3.2 4.0 2.3 9.2 7.6 2.4
[20] 3.6 1.8 5.4 6.5 6.9 3.6 2.7 9.6 6.3 9.9 6.1 8.7 3.0 2.0 7.8 6.3 5.1 2.2 7.5
[39] 9.4 1.4

Porovnání pipes a vnořování

Pipes

```{r}
objekt |> 
  prvni_funkce(druhy_parametr_prvni_funkce, treti_parametr_prvni_funkce) |> 
  druha_funkce(druhy_parametr_druhe_funkce) |> 
  treti_funkce(druhy_parametr_treti_funkce) |> 
  ctvrta_funkce() |> 
  pata_funkce(druhy_parametr_pate_funkce)
```

Vnořování

```{r}
pata_funkce(
  ctvrta_funkce(
    treti_funkce(
      druha_funkce(
        prvni_funkce(
          objekt, druhy_parametr_prvni_funkce, treti_parametr_prvni_funkce
        ), druhy_parametr_druhe_funkce
      ), druhy_parametr_treti_funkce
    )
  ), druhy_parametr_pate funkce
)
```

Ve starších příkladech najdete pipe, která vypadá takhle %>%. Je to plusmínus totéž.

Objekty

Výsledky jakýkoli operací (neboli výrazů) můžete ukládat do pojmenovaných objektů.

muj_objekt <- runif(n = 20, min = 1, max = 10)

muj_objekt |> 
  round(digits = 1)
 [1] 1.7 7.3 6.7 3.1 3.8 2.6 6.9 7.5 8.1 2.3 1.6 7.1 7.6 8.9 7.9 7.8 7.2 5.6 7.7
[20] 1.4
  • Jména objektů se mohou skládat jen z písmen anglické abecedy, podtržítek a teček.
  • Ukládají se do tzv. prostředí (environment).
  • Po ukončení R (resp. RStudia) nebo po restartu session zmizí.

Klávesové zkratky

Akce Windows & Linux Mac
Vlož blok kódu (chunk) Ctrl + Alt + I Cmd + Option + I
Vlož přiřazení (znaky <-) Alt + - Option + -
Vlož operátor pipe (|>) Ctrl + Shift + M Cmd + Shift + M
Proveď řádek kódu s kurzorem Ctrl + Enter Cmd + Enter
Proveď blok kódu s kurzorem Ctrl + Shift + Enter Cmd + Shift + Enter
Proveď všechny bloky v souboru Ctrl + Alt + R Cmd + Option + R
Proveď bloky nad kurzorem Ctrl + Alt + P Cmd + Option + P
Zobraz celý dokument v HTML Ctrl + Shift + K Cmd + Shift + K
Nápověda k funkci s kurzorem F1 F1
Nápověda/dokončení kódu Ctrl + Space Cmd + Space


Pokud si je nechcete pamatovat, všechny mají i své tlačítko buď na toolbaru nad editorem, nebo přímo v pravém horním rohu každého bloku kódu. Funkce tlačítek se vám zobrazí po najetí myši.